package com.snowRemovingUser.util;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class FileDownloadUtil {

   private static final Logger logger = LoggerFactory.getLogger(FileDownloadUtil.class);

   /**
     * 从Linux服务器下载文件
     *
     * @param remoteFilePath 远程文件路径
     * @param localFilePath  本地文件路径
     * @param username       Linux服务器用户名
     * @param password       Linux服务器密码
     * @param ip             Linux服务器的IP地址
     * @param port           Linux服务器的端口号
     * @return 下载文件是否成功
     */
   public static boolean downloadFile(String remoteFilePath, String localFilePath, String username, String password, String ip, int port) {
       JSch jSch = new JSch();
       try {
           // 创建session
           Session session = jSch.getSession(username, ip, port);
           session.setPassword(password);
           session.setConfig("StrictHostKeyChecking", "no");
           session.connect();

           // 创建sftp通道，并进行操作文件
           ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
           sftpChannel.connect();
           logger.info("已连接到Linux服务器.");

           // 下载文件
           sftpChannel.get(remoteFilePath, localFilePath);
           logger.info("文件已下载成功.");

           // 关闭sftp通道并disconnect session
           sftpChannel.exit();
           session.disconnect();

           return true;
       } catch (Exception e) {
           logger.error("从Linux服务器下载文件失败：", e.getMessage());
           return false;
       }
   }
}
